/**
 * 
 */
package com.servitware.cardio.domain.transport;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;


public class ClienteTx implements Serializable
{
	private static final long serialVersionUID = -4809939821154677038L;
	
	public Integer clienteDirecto = null;
	public Integer centro = null;
	public Integer clienteUsuario = null;
	
	
	
	private Integer id;
	private String nombre;
	private String primerApellido;
	private String segundoApellido;
	private Character sexo;

	/*
	 * por defecto, en cm
	 */
	private Integer estatura = 0;
	private Integer estaturaPies = 0;
	private Integer estaturaPulgadas = 0;

	/*
	 * por defecto, en kg
	 */
	private Integer peso = 0;
	private Integer pesoLibras = 0;
	private Date fechaNacimiento;
	private String antecedentes;
	

	private String nif;
	private String cuentaBancaria;
	
	private boolean enviarResultadoViaPostal = false;
	private String emailMedicoAlQueEnviarInforme = null;
	private boolean enviarResultadoAMedico = false;
	private boolean clienteGestionadoPorMedico = false;
	
	private String telefono;
	private String movil;
	private String email;
	private String clave;

	private String via;
	private String portal;
	private String piso;
	private String puerta;
	private String poblacion;
	private String codPostal;
	private int provincia;
	private int pais;
		
	public ClienteTx()
	{
		super();
	}

	public ClienteTx(Integer id, String nombre)
	{
		this.id = id;
		this.nombre = nombre;
		this.sexo = sexo;
	}

	

	@Override
	public int hashCode()
	{
		final int prime = 31;
		int result = 1;
		result = prime * result + ((antecedentes == null) ? 0 : antecedentes.hashCode());
		result = prime * result + ((centro == null) ? 0 : centro.hashCode());
		result = prime * result + ((clave == null) ? 0 : clave.hashCode());
		result = prime * result + ((clienteDirecto == null) ? 0 : clienteDirecto.hashCode());
		result = prime * result + (clienteGestionadoPorMedico ? 1231 : 1237);
		result = prime * result + ((clienteUsuario == null) ? 0 : clienteUsuario.hashCode());
		result = prime * result + ((codPostal == null) ? 0 : codPostal.hashCode());
		result = prime * result + ((cuentaBancaria == null) ? 0 : cuentaBancaria.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((emailMedicoAlQueEnviarInforme == null) ? 0 : emailMedicoAlQueEnviarInforme.hashCode());
		result = prime * result + (enviarResultadoAMedico ? 1231 : 1237);
		result = prime * result + (enviarResultadoViaPostal ? 1231 : 1237);
		result = prime * result + ((estatura == null) ? 0 : estatura.hashCode());
		result = prime * result + ((estaturaPies == null) ? 0 : estaturaPies.hashCode());
		result = prime * result + ((estaturaPulgadas == null) ? 0 : estaturaPulgadas.hashCode());
		result = prime * result + ((fechaNacimiento == null) ? 0 : fechaNacimiento.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((movil == null) ? 0 : movil.hashCode());
		result = prime * result + ((nif == null) ? 0 : nif.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		result = prime * result + pais;
		result = prime * result + ((peso == null) ? 0 : peso.hashCode());
		result = prime * result + ((pesoLibras == null) ? 0 : pesoLibras.hashCode());
		result = prime * result + ((piso == null) ? 0 : piso.hashCode());
		result = prime * result + ((poblacion == null) ? 0 : poblacion.hashCode());
		result = prime * result + ((portal == null) ? 0 : portal.hashCode());
		result = prime * result + ((primerApellido == null) ? 0 : primerApellido.hashCode());
		result = prime * result + provincia;
		result = prime * result + ((puerta == null) ? 0 : puerta.hashCode());
		result = prime * result + ((segundoApellido == null) ? 0 : segundoApellido.hashCode());
		result = prime * result + ((sexo == null) ? 0 : sexo.hashCode());
		result = prime * result + ((telefono == null) ? 0 : telefono.hashCode());
		result = prime * result + ((via == null) ? 0 : via.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj)
	{
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ClienteTx other = (ClienteTx) obj;
		if (antecedentes == null)
		{
			if (other.antecedentes != null)
				return false;
		}
		else if (!antecedentes.equals(other.antecedentes))
			return false;
		if (centro == null)
		{
			if (other.centro != null)
				return false;
		}
		else if (!centro.equals(other.centro))
			return false;
		if (clave == null)
		{
			if (other.clave != null)
				return false;
		}
		else if (!clave.equals(other.clave))
			return false;
		if (clienteDirecto == null)
		{
			if (other.clienteDirecto != null)
				return false;
		}
		else if (!clienteDirecto.equals(other.clienteDirecto))
			return false;
		if (clienteGestionadoPorMedico != other.clienteGestionadoPorMedico)
			return false;
		if (clienteUsuario == null)
		{
			if (other.clienteUsuario != null)
				return false;
		}
		else if (!clienteUsuario.equals(other.clienteUsuario))
			return false;
		if (codPostal == null)
		{
			if (other.codPostal != null)
				return false;
		}
		else if (!codPostal.equals(other.codPostal))
			return false;
		if (cuentaBancaria == null)
		{
			if (other.cuentaBancaria != null)
				return false;
		}
		else if (!cuentaBancaria.equals(other.cuentaBancaria))
			return false;
		if (email == null)
		{
			if (other.email != null)
				return false;
		}
		else if (!email.equals(other.email))
			return false;
		if (emailMedicoAlQueEnviarInforme == null)
		{
			if (other.emailMedicoAlQueEnviarInforme != null)
				return false;
		}
		else if (!emailMedicoAlQueEnviarInforme.equals(other.emailMedicoAlQueEnviarInforme))
			return false;
		if (enviarResultadoAMedico != other.enviarResultadoAMedico)
			return false;
		if (enviarResultadoViaPostal != other.enviarResultadoViaPostal)
			return false;
		if (estatura == null)
		{
			if (other.estatura != null)
				return false;
		}
		else if (!estatura.equals(other.estatura))
			return false;
		if (estaturaPies == null)
		{
			if (other.estaturaPies != null)
				return false;
		}
		else if (!estaturaPies.equals(other.estaturaPies))
			return false;
		if (estaturaPulgadas == null)
		{
			if (other.estaturaPulgadas != null)
				return false;
		}
		else if (!estaturaPulgadas.equals(other.estaturaPulgadas))
			return false;
		if (fechaNacimiento == null)
		{
			if (other.fechaNacimiento != null)
				return false;
		}
		else if (!fechaNacimiento.equals(other.fechaNacimiento))
			return false;
		if (id == null)
		{
			if (other.id != null)
				return false;
		}
		else if (!id.equals(other.id))
			return false;
		if (movil == null)
		{
			if (other.movil != null)
				return false;
		}
		else if (!movil.equals(other.movil))
			return false;
		if (nif == null)
		{
			if (other.nif != null)
				return false;
		}
		else if (!nif.equals(other.nif))
			return false;
		if (nombre == null)
		{
			if (other.nombre != null)
				return false;
		}
		else if (!nombre.equals(other.nombre))
			return false;
		if (pais != other.pais)
			return false;
		if (peso == null)
		{
			if (other.peso != null)
				return false;
		}
		else if (!peso.equals(other.peso))
			return false;
		if (pesoLibras == null)
		{
			if (other.pesoLibras != null)
				return false;
		}
		else if (!pesoLibras.equals(other.pesoLibras))
			return false;
		if (piso == null)
		{
			if (other.piso != null)
				return false;
		}
		else if (!piso.equals(other.piso))
			return false;
		if (poblacion == null)
		{
			if (other.poblacion != null)
				return false;
		}
		else if (!poblacion.equals(other.poblacion))
			return false;
		if (portal == null)
		{
			if (other.portal != null)
				return false;
		}
		else if (!portal.equals(other.portal))
			return false;
		if (primerApellido == null)
		{
			if (other.primerApellido != null)
				return false;
		}
		else if (!primerApellido.equals(other.primerApellido))
			return false;
		if (provincia != other.provincia)
			return false;
		if (puerta == null)
		{
			if (other.puerta != null)
				return false;
		}
		else if (!puerta.equals(other.puerta))
			return false;
		if (segundoApellido == null)
		{
			if (other.segundoApellido != null)
				return false;
		}
		else if (!segundoApellido.equals(other.segundoApellido))
			return false;
		if (sexo == null)
		{
			if (other.sexo != null)
				return false;
		}
		else if (!sexo.equals(other.sexo))
			return false;
		if (telefono == null)
		{
			if (other.telefono != null)
				return false;
		}
		else if (!telefono.equals(other.telefono))
			return false;
		if (via == null)
		{
			if (other.via != null)
				return false;
		}
		else if (!via.equals(other.via))
			return false;
		return true;
	}

	@Override
	public String toString()
	{
		return "ClienteTx [id=" + id + ", nombre=" + nombre + ", primerApellido=" + primerApellido + ", segundoApellido=" + segundoApellido
				+ ", nif=" + nif + ", sexo=" + sexo + ", estatura=" + estatura + ", estaturaPies=" + estaturaPies + ", estaturaPulgadas="
				+ estaturaPulgadas + ", peso=" + peso + ", pesoLibras=" + pesoLibras + ", fechaNacimiento=" + fechaNacimiento
				+ ", antecedentes=" + antecedentes + ", enviarResultadoViaPostal=" + enviarResultadoViaPostal + "]";
	}

	public Integer getId()
	{
		return id;
	}

	public void setId(Integer id)
	{
		this.id = id;
	}

	
	public String getNif()
	{
		return nif;
	}

	public void setNif(String nif)
	{
		this.nif = nif;
	}

	public String getNombre()
	{
		return nombre;
	}

	public void setNombre(String nombre)
	{
		this.nombre = nombre;
	}

	
	public String getPrimerApellido()
	{
		return primerApellido;
	}

	public void setPrimerApellido(String primerApellido)
	{
		this.primerApellido = primerApellido;
	}

	public String getSegundoApellido()
	{
		return segundoApellido;
	}

	public void setSegundoApellido(String segundoApellido)
	{
		this.segundoApellido = segundoApellido;
	}

	public int getEstatura()
	{
		return estatura;
	}

	public void setEstatura(int estatura)
	{
		this.estatura = estatura;
	}

	public int getEstaturaPies()
	{
		return estaturaPies;
	}

	public Integer getEstaturaPulgadas()
	{
		return estaturaPulgadas;
	}

	public void setEstaturaPulgadas(Integer estaturaPulgadas)
	{
		this.estaturaPulgadas = estaturaPulgadas;
	}

	public Integer getPeso()
	{
		return peso;
	}

	public void setPeso(Integer peso)
	{
		this.peso = peso;
	}

	public Integer getPesoLibras()
	{
		return pesoLibras;
	}

	public void setPesoLibras(Integer pesoLibras)
	{
		this.pesoLibras = pesoLibras;
	}

	public void setEstatura(Integer estatura)
	{
		this.estatura = estatura;
	}

	public void setEstaturaPies(Integer estaturaPies)
	{
		this.estaturaPies = estaturaPies;
	}

	public String getAntecedentes()
	{
		return antecedentes;
	}

	public void setAntecedentes(String antecedentes)
	{
		this.antecedentes = antecedentes;
	}

	public boolean isEnviarResultadoViaPostal()
	{
		return enviarResultadoViaPostal;
	}

	public void setEnviarResultadoViaPostal(boolean enviarResultadoViaPostal)
	{
		this.enviarResultadoViaPostal = enviarResultadoViaPostal;
	}

	public String getSexoDesc()
	{
		if (String.valueOf('M').equalsIgnoreCase("sexo")){
			return "Mujer";
		}else{
			return "Hombre";
		}
	}
	
	public Character getSexo()
	{
		return sexo;
	}

	public void setSexo(Character sexo)
	{
		this.sexo = sexo;
	}

	public int getEdad()
	{
		if (fechaNacimiento!=null){
			Calendar cal = Calendar.getInstance(); // current date
			int currYear = cal.get(Calendar.YEAR);
			int currMonth = cal.get(Calendar.MONTH);
			int currDay = cal.get(Calendar.DAY_OF_MONTH);
			cal.setTime(fechaNacimiento); // now born date
			int years = currYear - cal.get(Calendar.YEAR);
			int bornMonth = cal.get(Calendar.MONTH);
			if (bornMonth == currMonth) { // same month
			return cal.get(Calendar.DAY_OF_MONTH) <= currDay ? years
			: years - 1;
			} else {
			return bornMonth < currMonth ? years - 1 : years;
			}
		}
		return 0;
	}

	
	public Date getFechaNacimiento()
	{
		return fechaNacimiento;
	}

	public void setFechaNacimiento(Date fechaNacimiento)
	{
		this.fechaNacimiento = fechaNacimiento;
	}

	public String getCuentaBancaria()
	{
		return cuentaBancaria;
	}

	public void setCuentaBancaria(String cuentaBancaria)
	{
		this.cuentaBancaria = cuentaBancaria;
	}

	public Integer getClienteDirecto()
	{
		return clienteDirecto;
	}

	public void setClienteDirecto(Integer clienteDirecto)
	{
		this.clienteDirecto = clienteDirecto;
	}

	public Integer getCentro()
	{
		return centro;
	}

	public void setCentro(Integer centro)
	{
		this.centro = centro;
	}

	public Integer getClienteUsuario()
	{
		return clienteUsuario;
	}

	public void setClienteUsuario(Integer clienteUsuario)
	{
		this.clienteUsuario = clienteUsuario;
	}

	public String getEmailMedicoAlQueEnviarInforme()
	{
		return emailMedicoAlQueEnviarInforme;
	}

	public void setEmailMedicoAlQueEnviarInforme(String emailMedicoAlQueEnviarInforme)
	{
		this.emailMedicoAlQueEnviarInforme = emailMedicoAlQueEnviarInforme;
	}

	public Boolean getClienteGestionadoPorMedico()
	{
		return clienteGestionadoPorMedico;
	}

	public void setClienteGestionadoPorMedico(Boolean clienteGestionadoPorMedico)
	{
		this.clienteGestionadoPorMedico = clienteGestionadoPorMedico;
	}

	public String getTelefono()
	{
		return telefono;
	}

	public void setTelefono(String telefono)
	{
		this.telefono = telefono;
	}

	public String getMovil()
	{
		return movil;
	}

	public void setMovil(String movil)
	{
		this.movil = movil;
	}

	public String getEmail()
	{
		return email;
	}

	public void setEmail(String email)
	{
		this.email = email;
	}

	public String getClave()
	{
		return clave;
	}

	public void setClave(String clave)
	{
		this.clave = clave;
	}

	public String getVia()
	{
		return via;
	}

	public void setVia(String via)
	{
		this.via = via;
	}

	public String getPortal()
	{
		return portal;
	}

	public void setPortal(String portal)
	{
		this.portal = portal;
	}

	public String getPiso()
	{
		return piso;
	}

	public void setPiso(String piso)
	{
		this.piso = piso;
	}

	public String getPuerta()
	{
		return puerta;
	}

	public void setPuerta(String puerta)
	{
		this.puerta = puerta;
	}

	public String getPoblacion()
	{
		return poblacion;
	}

	public void setPoblacion(String poblacion)
	{
		this.poblacion = poblacion;
	}

	public String getCodPostal()
	{
		return codPostal;
	}

	public void setCodPostal(String codPostal)
	{
		this.codPostal = codPostal;
	}

	public int getProvincia()
	{
		return provincia;
	}

	public void setProvincia(int provincia)
	{
		this.provincia = provincia;
	}

	public int getPais()
	{
		return pais;
	}

	public void setPais(int pais)
	{
		this.pais = pais;
	}


	public boolean isEnviarResultadoAMedico()
	{
		return enviarResultadoAMedico;
	}

	public void setEnviarResultadoAMedico(boolean enviarResultadoAMedico)
	{
		this.enviarResultadoAMedico = enviarResultadoAMedico;
	}

	

}
